package com.myzl.coal.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.myzl.coal.domain.RealTimeData;
import com.myzl.coal.domain.vo.BriefingVO;
import com.myzl.coal.domain.vo.ComparisonVO;
import com.myzl.common.core.domain.AjaxResult;
import com.myzl.common.enums.StatusStringType;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 实时数据Service接口
 *
 * @author myzl
 * @date 2022-09-01
 */
public interface IRealTimeDataService extends IService<RealTimeData> {
    /**
     * 查询实时数据
     *
     * @param id 实时数据主键
     * @return 实时数据
     */
    public RealTimeData selectRealTimeDataById(String id);
    /**
     * 查询实时数据列表
     *
     * @param realtimeData 实时数据
     * @return 实时数据集合
     */
    public List<RealTimeData> selectRealTimeDataList(RealTimeData realtimeData);
    /**
     * updateRealTimeDeviceStatus
     * @param id
     * @param statusStringType
     * @return void
     * @author  wzb
     * @date 2023/2/8
     * @description
     */
    public void updateRealTimeDeviceStatus(Integer id, StatusStringType statusStringType);


    /**
     * 新增实时数据
     *
     * @param realtimeData 实时数据
     * @return 结果
     */
    public int insertRealTimeData(RealTimeData realtimeData);

    /**
     * 修改实时数据
     *
     * @param realtimeData 实时数据
     * @return 结果
     */
    public int updateRealTimeData(RealTimeData realtimeData);

    /**
     * 批量删除实时数据
     *
     * @param ids 需要删除的实时数据主键集合
     * @return 结果
     */
    public int deleteRealTimeDataByIds(String[] ids);

    /**
     * 删除实时数据信息
     *
     * @param id 实时数据主键
     * @return 结果
     */
    public int deleteRealTimeDataById(String id);

    /**
     * 根据类型修改
     * @param list 参数集合
     * @return 结果
     */
    public int updateRealTimeDataByType(List<RealTimeData> list);

    /**
     * 统计分析
     * @param deviceId 设备id
     * @param date 日期 yyyy-MM-dd
     * @return 结果
     */
    public ComparisonVO comparison(Integer deviceId,String date);

    /**
     * 获取当前数据
     * 按照 瞬时 速度 早 中 晚 日 月  年  的顺序处理数据
     * @param deviceId 设备id
     * @param contents 时间段
     * @return 结果
     */
    public List<Object> currentData(Integer deviceId, List<Integer> contents);
    public List<Object> currentData(Integer deviceId);
    public List<Object> currentData(Integer deviceId,String startTime,String endTime);

    /**
     * 统计数据
     *
     * @param briefingVO 统计实体
     * @return 结果
     */
    public BriefingVO briefing(BriefingVO briefingVO);

    /**
     * 按时间查询
     * @param deviceId 设备编号
     * @param startTime 开始时间
     * @param EndTime 结束时间
     * @return 结果
     */
    public List<RealTimeData> queryDataByDate(Long deviceId, Date startTime, Date EndTime);

    /**
     * queryByDictValue
     * @param dictValue
     * @return com.myzl.coal.domain.RealTimeData
     * @author  wzb
     * @date 2022/11/7
     * @description
     */
    public RealTimeData queryByDictValue(Integer deviceId,Integer dictValue) ;
    /**
     * 当前瞬时量
     * @param deviceId 设备id
     * @return 结果
     */
    public RealTimeData currentFlow(Integer deviceId);

    /**
     * 当前班次设备折线图统计数据
     * @param deviceId 设备编号
     * @return 结果
     */
    public AjaxResult brokenLineData(Integer deviceId);


    /**
     * 查询平均厚度
     * @param deviceId 设备id
     * @return 结果
     */
    public AjaxResult averageThickness(Integer deviceId);

    public AjaxResult averageThickness1(Integer deviceId);

    /**
     * 查询煤流当前截面图
     * @param deviceId 设备id
     * @return 结果
     */
    public AjaxResult sectionData(Integer deviceId);

    /**
     * 30分钟煤流厚度趋势数据
     * @param deviceId 设备id
     * @return 结果
     */
    public AjaxResult trendData(Integer deviceId);

    /**
     * 5分钟煤流厚度平均值
     * @param deviceId 设备id
     * @return 结果
     */
    public Map<Integer, String> thicknessAlarmData(Integer deviceId);

    /**
     * 30分钟筛机截图分类占比
     * @param deviceId 设备id
     * @return 结果
     */
    public AjaxResult proportionData(Integer deviceId);

}
